I want to make multiple fetch requests, each request has a different payload, studentID in this example. Every loop changes the studentID, but the payload is defined as a template literal variable outside the loop for readability. Is there a way to get for loop iterator value to the payload (defined outside)?
var payload=`{"studentID": ${studentID}}` //expecting studentID to be iterated in loop
var myInit = {
method: 'POST',
headers: {
'Accept': 'application/json, text/plain, */*',
'Content-Type': 'application/json'
},
body: payload
};
for(var studentID = 0; studentID <= 10; studentID++) {
fetch(URI, myInit)
.then( r => r.json() )
.then( r => console.log(r)
.catch(e => console.log(e));
}
studentID values (0,1,2,3...) cannot get into myInit's payload template.
Make a function instead.
const makeInit = studentID => ({
method: 'POST',
headers: {
'Accept': 'application/json, text/plain, */*',
'Content-Type': 'application/json'
},
body: `{"studentID": ${studentID}}`
});
for(var studentID = 0; studentID <= 10; studentID++) {
fetch(URI, makeInit(studentID))
Maybe don't stringify manually.
const makeInit = studentID => ({
method: 'POST',
headers: {
'Accept': 'application/json, text/plain, */*',
'Content-Type': 'application/json'
},
body: JSON.stringify({ studentID })
});
for(var studentID = 0; studentID <= 10; studentID++) {
fetch(URI, makeInit(studentID))